package com.itheima.dao.Mapper;

import com.itheima.dao.pojo.User;
import org.apache.ibatis.annotations.*;

import java.util.ArrayList;
import java.util.List;

public interface UserMapper {




    /**
     *  根据传递过来的关键字查询符合条件的用户
     * @param keyword       传递过来的关键字
     * @return              符合条件的用户
     */
    @Select("select id,name,sex,age,address,qq,email " +
            "from t_user " +
            "where isdelete = 0 and " +
            "name like CONCAT('%',#{keyword},'%') or " +
            "sex = #{keyword} or " +
            "address = #{keyword} or " +
            "qq like CONCAT('%',#{keyword},'%') or " +
            "email like CONCAT('%',#{keyword},'%')")
    List<User> getUserByKeyWord(@Param("keyword") String keyword);





//    ---------------------------------------------
    /**
     *   分页查询
     * @param currentPage  页数
     * @return             查询到的用户
     */
    @Select("select id,name,sex,age,address,qq,email from t_user where isdelete=0 LIMIT #{currentPage} , 5")
    ArrayList<User>  pagingUser(@Param("currentPage") Integer currentPage);

    /**
     *  获取数据库存储的数据个数
     * @return    返回查询到的个数
     */
    @Select("select count(id) from t_user")
    Integer getMax();

//--------------------------------------------------------
    /**
     * 根据用户id查询用户信息
     * @param id    用户id
     * @return      返回一个用户对象
     */
    @Select("select id,name,sex, age, address,qq,email from t_user where id = #{id}")
    User getUserById(@Param("id") Integer id);

//----------------------------------------------------------------

    /**
     *  根据邮箱修改用户的信息
     * @param user    用户对象
     * @return        修改的行数>0表示成功
     */
    @Update("update t_user set name = #{name} , sex = #{sex} , age = #{age} ,address = #{ address} where id = #{id} ;")
    Integer setUserById(User user);




//----------------------------------------------------------------------

    /**
     * 根据用户id修改用户的存在状态
     * @param id   用户的id
     * @return     修改的行数>0表示成功
     */
    @Update("update t_user set isdelete ='1' where id = #{id}")
    int deleteUserById(@Param("id") Integer id);


//-----------------------------------------------
    /**
     * 根据email查询用户是否存在
     * @param email   填写的email值
     * @return        用户对象
     */
    @Select("select id,name,sex, age, address,qq,email from t_user where email = #{email}")
    User getUserByEmail(@Param("email") String email);
    /**
     *  添加用户
     * @param user 用户对象
     * @return     返回int类型的数字 >0表示成功
     */
    @Insert("insert into t_user ( name , sex , age , address , qq , email)" +
            "values " +
            "(#{name} , #{sex} ,#{age},#{address},#{qq},#{email})")
    int addUser(User user);


//--------------------------------------------------------------
    /**
     *          查询所有用户
     * @return  用户集合
     */
    @Select(" select id,name,sex, age, address,qq,email from t_user where isdelete = '0'")
    List<User> getUser();

}
